function vortex(n, m) {
  const nums = new Array(n).fill(0).map(() => new Array(m).fill(0));
  let i = 0; // 行号
  let j = 0; // 列号
  let count = 1; // 填充的数字
  let setpI = 0; // i增加的数字
  let setpJ = 1; // j增加的数字
  while (true) {
    nums[i][j] = count;
    count++;
    i += setpI;
    j += setpJ;
    // 转向函数
    function hasBlock() {
      return !nums[i] || nums[i][j] != 0;
    }
    // 判断是否需要转向
    if (hasBlock()) {
      i -= setpI;
      j -= setpJ;
      if (setpI === 0) {
        setpI = setpJ;
        setpJ = 0;
      } else {
        setpJ = -setpI;
        setpI = 0;
      }
      i += setpI;
      j += setpJ;
      if (hasBlock()) {
        break;
      }
    }
  }
  return nums;
}

console.log(vortex(5, 6));
